home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / pyshared / GDebi / Cache.py < prev    next >
Text File  |  2008-08-05  |  3KB  |  86 lines

  1. # Copyright (c) 2005-2007 Canonical
  2. #
  3. # AUTHOR:
  4. # Michael Vogt <mvo@ubuntu.com>
  5. #
  6. # This file is part of GDebi
  7. #
  8. # GDebi is free software; you can redistribute it and/or
  9. # modify it under the terms of the GNU General Public License as published
  10. # by the Free Software Foundation; either version 2 of the License, or (at
  11. # your option) any later version.
  12. #
  13. # GDebi is distributed in the hope that it will be useful,
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  16. # General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU General Public License
  19. # along with GDebi; if not, write to the Free Software
  20. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  21. #
  22.  
  23. import warnings
  24. from warnings import warn
  25. warnings.filterwarnings("ignore", "apt API not stable yet", FutureWarning)
  26. import apt
  27.  
  28. class Cache(apt.Cache):
  29.     """ helper to provide some additonal functions """
  30.  
  31.     def clear(self):
  32.         """ unmark all pkgs """
  33.         self._depcache.Init()
  34.  
  35.     def isVirtualPkg(self, pkgname):
  36.         """ this function returns true if pkgname is a virtual
  37.             pkg """
  38.         try:
  39.             virtual_pkg = self._cache[pkgname]
  40.         except KeyError:
  41.             return False
  42.  
  43.         if len(virtual_pkg.VersionList) == 0:
  44.             return True
  45.         return False
  46.  
  47.     def downloadable(self, pkg, useCandidate=True):
  48.         " check if the given pkg can be downloaded "
  49.         if useCandidate:
  50.             ver = self._depcache.GetCandidateVer(pkg._pkg)
  51.         else:
  52.             ver = pkg._pkg.CurrentVer
  53.         if ver == None:
  54.             return False
  55.         return ver.Downloadable
  56.  
  57.     def getProvidersForVirtual(self, virtual_pkg):
  58.         providers = []
  59.         try:
  60.             vp = self._cache[virtual_pkg]
  61.             if len(vp.VersionList) != 0:
  62.                 return providers
  63.         except IndexError:
  64.             return providers
  65.         for pkg in self:
  66.             v = self._depcache.GetCandidateVer(pkg._pkg)
  67.             if v == None:
  68.                 continue
  69.             for p in v.ProvidesList:
  70.                 #print virtual_pkg
  71.                 #print p[0]
  72.                 if virtual_pkg == p[0]:
  73.                     # we found a pkg that provides this virtual
  74.                     # pkg, check if the proivdes is any good
  75.                     providers.append(pkg)
  76.                     #cand = self._cache[pkg.name]
  77.                     #candver = self._cache._depcache.GetCandidateVer(cand._pkg)
  78.                     #instver = cand._pkg.CurrentVer
  79.                     #res = apt_pkg.CheckDep(candver.VerStr,oper,ver)
  80.                     #if res == True:
  81.                     #    self._dbg(1,"we can use %s" % pkg.name)
  82.                     #    or_found = True
  83.                     #    break
  84.         return providers
  85.  
  86.